﻿using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using itau.nk.entidade;
using EnterpriseLibraryWrapper;

namespace itau.nk.dado
{
    public class YieldDB : IYieldDAO
    {
        public IList<Informacao> ObterInformacoesYieldDiaria(string nomeMercado, string nomeYield, DateTime dataReferencia)
        {
            IList<Informacao> listaRetorno;
            IDataAccessWrapper data = null;
            DataSet ds;

            try
            {
                listaRetorno = new List<Informacao>();

                data = EnterpriseLibraryFactory.GetDataAccess("SQL_CONNECTION");

                data.ParameterIn.Add(new ParameterInWrapper("@NM_MERCADO", nomeMercado, DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@NM_YIELD", nomeYield, DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@DT_REFERENCIA", dataReferencia, DbType.DateTime));

                ds = data.ExecuteDataSet("DBO.SP_CONSULTA_YIELD");

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        listaRetorno.Add(EntidadeFactory.GetYieldInformacao(linha));
                    }
                }

                return listaRetorno;
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                listaRetorno = null;
                data.Dispose();
                data = null;
                ds = null;
            }

            return new List<Informacao>();
        }
    }
}
